package com.kung.qvs.data.source;

import com.kung.qvs.entity.BaseResultBean;
import com.kung.qvs.entity.DemoEntity;
import com.kung.qvs.entity.GarbageTypeBean;
import com.kung.qvs.entity.KRecordWeight;
import com.kung.qvs.entity.ProductBean;
import com.kung.qvs.entity.ProductInfoBean;
import com.kung.qvs.entity.ProductTypeBean;
import com.kung.qvs.entity.PropInfoBean;
import com.kung.qvs.entity.ResSetInfoBean;
import com.kung.qvs.entity.StatisticsBean;
import com.kung.qvs.entity.WorkerBean;
import com.kung.qvs.utils.Constants;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.BaseResponseBean;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Created by goldze on 2019/3/26.
 */
public interface HttpDataSource {
    Observable<BaseResultBean<List<ProductTypeBean>>> reqSynchronizeProductTypes(String orgCode, String deviceCode);
    Observable<BaseResultBean<List<ProductBean>>> reqSynchronizeProducts(String orgCode, String deviceCode);
    Observable<BaseResultBean<Integer>> reqAddProductBean(String orgCode, String deviceCode, String productCode,
                                                          String parentId, String productName, String productWeight,
                                                          String convertRate, String remark);

    Observable<BaseResultBean<Integer>> reqUpdateProductBean(String orgCode, String deviceCode, String productCode,
                                                             String parentId, String productName, String productWeight,
                                                             String convertRate, String remark);

    Observable<BaseResultBean<Integer>> reqDeleteProductBean(String orgCode, String deviceCode, String productCode);

    Observable<BaseResultBean<List<WorkerBean>>> reqSynchronizePackers(String orgCode, String deviceCode, String roleId, String userName);

    Observable<BaseResultBean<Integer>> reqDeletePacker(String orgCode, String deviceCode, String userId);

    Observable<BaseResultBean<Integer>> reqAddPacker(String orgCode, String deviceCode, String userCode, String userName);

    Observable<BaseResultBean<Integer>> reqUpdatePacker(String orgCode, String deviceCode, String userId, String userCode,
                                                        String userName);

    Observable<BaseResultBean<KRecordWeight>> reqUploadWeightRecord(String orgCode, String deviceCode, String productId,
                                                                    String productName, String standardWeight, String convertRate,
                                                                    String packerId, String packerAccount, String packerName,
                                                                    String weight, String amount,String printCompany, String isHang);

    Observable<BaseResultBean<List<KRecordWeight>>> reqGetWeightRecord(String orgCode, String deviceCode, String workerId,
                                                                       String beginTime, String endTime, int pageSize, int pageIndex);

    Observable<BaseResultBean<StatisticsBean>> reqGetWeightRecordStatistics(String orgCode, String deviceCode);

    Observable<BaseResultBean<List<KRecordWeight>>> reqGetWeightRecordStatisticsDetail(String orgCode, String deviceCode,
                                                                                       String beginTime, String endTime);
}
